package com.triadsystems.cashweb.modelo.negocio.servicos.impl;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.inject.Named;

import com.icon.infra.modelo.negocio.excecoes.ConsultaInvalidaException;
import com.icon.infra.modelo.negocio.excecoes.MultiplosResultadosParaRecuperarObjetoException;
import com.icon.infra.modelo.negocio.excecoes.ObjetoNaoEncontradoException;
import com.icon.infra.modelo.persistencia.dao.impl.DAOHibernateTemplate;
import com.triadsystems.cashweb.modelo.negocio.servicos.ICupomTefServico;
import com.triadsystems.cashweb.modelo.persistencia.entidades.CupomTef;
import com.triadsystems.cashweb.modelo.persistencia.entidades.Pagamento;
import com.triadsystems.cashweb.modelo.persistencia.enums.TipoPagamentoEnum;

@SuppressWarnings("unchecked")
@Named
public class CupomTefServico extends DAOHibernateTemplate<CupomTef> implements
		ICupomTefServico, Serializable {
	private static final long serialVersionUID = 1L;

	@Override
	public List<CupomTef> doRecuperarCuponsByPagamentos(List<Pagamento> listaPagamento) throws MultiplosResultadosParaRecuperarObjetoException, com.icon.infra.modelo.negocio.excecoes.ObjetoNaoEncontradoException, ConsultaInvalidaException {
		List<CupomTef> listaCupom = new ArrayList<CupomTef>();
		CupomTef cupom = new CupomTef();
		
			for (Pagamento item : listaPagamento) {
				if(item.getTipoPagamento().equals(TipoPagamentoEnum.CARTAO_CREDITO) || item.getTipoPagamento().equals(TipoPagamentoEnum.CARTAO_DEBITO)){
					String stringHQL = "from CupomTef cp " +
							" where cp.pagamento =:pagamento";
					
					String params[] = {"pagamento"};
					Object valores[] = {item};
					
						cupom = (CupomTef) recuperarObjetoPorHQL(stringHQL, params, valores);
					listaCupom.add(cupom);
				}
			}
		return listaCupom;
	}
	
	public CupomTef getRecuperarCupomByPagamento(Pagamento pagamento) throws MultiplosResultadosParaRecuperarObjetoException, ObjetoNaoEncontradoException, ConsultaInvalidaException {
		CupomTef resultado = new CupomTef();
		
		String stringHQL = "from CupomTef cp where cp.pagamento =:pagamento";
		String params[] = {"pagamento"};
		Object valores[] = {pagamento};
		
		resultado = (CupomTef) recuperarObjetoPorHQL(stringHQL, params, valores);
		return resultado;
	}
}
